<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
        function Person(name,age,sex,weight){
            this.name = name            
            this.age = age
            this.sex = sex
            this.weight = weight 
        }   
        Person.prototype.sayHi = function(){
            console.log('Hello')
        }

        function Student(name,age,sex,weight,score){
            Person.call(this,name,age,sex,weight)//调用了Person的构造函数
            this.score = score
        }

        //希望人的类别中的数据可以共享给学生 --- 继承
        // Student.prototype = new Person('小明',10,'男','50kg')
        
        // var stu1 = new Student('100')
        
        // console.log(stu1.name,stu1.age,stu1.sex,stu1.weight,stu1.score)
        // var stu2 = new Student('200')
        // stu2.name = 'zhangsan'
        // console.log(stu2.name,stu2.age,stu2.sex,stu2.weight,stu2.score)
        // var stu3 = new Student('300')
        // console.log(stu3.name,stu3.age,stu3.sex,stu3.weight,stu3.score)
        
        //为了数据共享，改变原型指向，做到了继承--- 通过改变原型指向实现的继承
        //缺陷：因为改变原型指向的同时实现继承，直接初始化了属性，继承过来的属性的值都是一样的，所以这就是问题
        //只有重新调用对象的属性进行重新赋值

        //解决方案：继承的时候，不用改变原型的指向，直接调用父级的构造函数的方式来为属性赋值就可以了 -- 借用构造函数
        //把要继承的父级的构造函数拿过来，使用一下就可以了
        
        //借用构造函数：构造函数名字.call(当前对象，属性，属性，属性，。。。)
        //解决了属性继承，并且值不重复的问题，
        //缺陷：父级中的行为不能继承

        

        // Student.prototype = new Person('小明',10,'男','50kg')
        
        var stu1 = new Student('小明',10,'男','100kg',100)        
        console.log(stu1.name,stu1.age,stu1.sex,stu1.weight,stu1.score)
        stu1.sayHi()

        var stu2 = new Student('小红',20,'女','200kg',200)
        console.log(stu2.name,stu2.age,stu2.sex,stu2.weight,stu2.score)
        stu2.sayHi()

        var stu3 = new Student('小丽',18,'妖','300kg',200)
        console.log(stu3.name,stu3.age,stu3.sex,stu3.weight,stu3.score)
        stu3.sayHi()

    </script>
</body>
</html>